from collections import deque
# Реализуем стек с помощью класс deque изи библиотеки collections
# В этой строке укажите кто автор. Например: Епифанов А.В. 
# У МЕНЯ НЕТ ВХОДА НА HUB.MOS.RU ВЫПОЛНИЛ С АККАУНТА ЖЕНЫ!!!!!!!!!!

class Stack:
    def __init__(self):
        self.stack = deque() # используем колоду или двусторонняя очередь


    def pop(self):
        """Метод удаляющий верхний элемент. Стек изменяется. Метод возвращает 
верхний элемент стека"""
        if len(self.stack) == 0:
            return None
        return self.stack.pop()


    def push(self, item):
        """Метод добавляющий элемент на вершину стека. Метод ничего 
не возвращает"""
        self.stack.append(item)


    def isEmpty(self):
        """Метод проверки стека на пустоту. Должен возвращать True или False"""
        if len(self.stack) == 0:
            return True
        elif len(self.stack) > 0:
            return False


    def peek(self):
        """Метод возвращает верхний элемент стека, но не удаляет его. 
Стек не меняется"""
        if len(self.stack) == 0:
            return None
        element = self.stack[1]
            return element


    def check_stack(text):
        stack = Stack()
        for i in range(0,len(text)):
            if text[i] in "({[":
                stack.push(text[i])
            if text[i] in "})]":
                s = stack.pop()
            if (text[i]== ")" and s=="("):
                pass
            else:
                return False
                break;
        if stack.isEmpty():
            return True


print(check_stack('(((())))'))
